structural design patterns for beginners